1
От игрушечных наборов данных к хаосу реального мира
EvoClass-AI002Лекция 5
00:00

1. Мост между теорией и практикой: основы загрузки данных

Модели глубокого обучения процветают на чистых, последовательных данных, но реальные наборы данных по своей природе неупорядочены. Нам нужно перейти от готовых бенчмарков (например, MNIST) к управлению неструктурированными источниками, где сама загрузка данных — это сложная задача по координации. Основой этого процесса являются специализированные инструменты PyTorch для управления данными.

Основная проблема заключается в преобразовании сырых, разрозненных данных (изображений, текста, аудиофайлов), хранящихся на диске, в хорошо структурированный, стандартизированный формат формат тензоров, ожидаемый графическим процессором. Для этого требуется пользовательская логика для индексирования, загрузки, предварительной обработки и, наконец, батчинга.

Ключевые проблемы при работе с реальными данными

  • Хаос данных: Данные разбросаны по нескольким каталогам, часто индексируются только файлами CSV.
  • Требуется предобработка: Изображения могут требовать изменения размера, нормализации или аугментации перед конвертацией в тензоры.
  • Цель повышения эффективности: Данные должны поступать на графический процессор в оптимизированных, неблокирующих пакетах, чтобы максимально ускорить обучение.
Решение от PyTorch: разделение обязанностей
PyTorch обеспечивает разделение ответственности: класс Dataset отвечает за «что» (как получить один образец и метку), в то время как класс DataLoader отвечает за «как» (эффективный батчинг, перемешивание и многопоточная доставка).
data_pipeline.py
ТЕРМИНАЛbash — data-env
> Готово. Нажмите «Запустить», чтобы выполнить.
>
ИНСПЕКТОР ТЕНЗОРОВВ режиме реального времени

Запустите код, чтобы просмотреть активные тензоры
Вопрос 1
Какова основная роль объекта PyTorch Dataset?
Организовать образцы в мини-пакеты и перемешать их.
Определить логику получения одного предварительно обработанного образца.
Выполнить матричное умножение внутри модели.
Вопрос 2
Какой параметр DataLoaderвключает параллельную загрузку данных с использованием нескольких ядер ЦП?
device_transfer
batch_size
num_workers
async_load
Вопрос 3
Если ваши исходные изображения имеют разные размеры, какой компонент в первую очередь отвечает за изменение их размера до единого значения (например, $224 \times 224$)?
Функция DataLoader collate_fn.
Специализированный процессор изображений графического процессора.
Функция преобразования, применяемая в методе __getitem__ класса Dataset.
Вызов: Чертеж пользовательского загрузчика изображений
Определите структуру, необходимую для классификации изображений в реальных условиях.
Вы создаете класс CustomDataset для 10 000 изображений, проиндексированных одним файлом CSV, содержащим пути и метки.
Шаг 1
Какой обязательный метод должен вернуть общее количество образцов?
Решение:
Метод __len__ класса Dataset.
Концепция: определяет размер эпохи.
Шаг 2
Каков правильный порядок операций внутри __getitem__(self, index)?
Решение:
1. Найти путь к файлу с помощью index.
2. Загрузить исходные данные (например, изображение).
3. Применить необходимые преобразования.
4. Вернуть обработанный тензор и метку.